//
//  HMMainViewController.swift
//  Weibo
//
//  Created by HM on 16/5/19.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

// cmd + shift + j
// 获取文件焦点

class HMMainViewController: UITabBarController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //添加TabController的子视图控制器
        // 只是影响了一个模型数组
        addChildViewControllers()
       
        
        let mainTabbar = HMMainTabbar()
        // target - action 是OC中的机制 
        
        mainTabbar.plusBtn.addTarget(self, action: #selector(HMMainViewController.plusBtnDidClick), forControlEvents: .TouchUpInside)
        //赋值 只读属性不能够直接赋值 但是 可以通过 KVC 间接赋值
//        self.tabBar = mainTabbar
        //classForCoder 类型的字符串
        print(tabBar.classForCoder)
        //setObject: forKey:    ==> 字典
        setValue(mainTabbar, forKey: "tabBar")
        print(tabBar.classForCoder)
        
        
        

    }
    
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
    }
    
    //为了让外界不能够访问按钮的监听方法 需要添加private 私有
    //一旦添加private 这个时候这个 就不具备动态派发的特性
    //需要添加 @objc 告诉系统这个方法 是基于OC消息动态派发的
    
    @objc private func plusBtnDidClick() {
        print("我被点了")
        //添加撰写的选择视图
        let composeView = HMComposeView()
        
        composeView.show(targetVC: self)
//        let window = UIApplication.sharedApplication().keyWindow
//        window?.addSubview(composeView)
    }
    
    //private 表示 私有的意思 只是相对于当前文件 是私有的
    private func addChildViewControllers() {
        addChildViewController(HMHomeTableViewController(), title: "首页", imageName: "tabbar_home",index: 0)
        addChildViewController(HMMessageTableViewController(), title: "消息", imageName: "tabbar_message_center",index: 1)
        addChildViewController(HMDiscoverTableViewController(), title: "发现", imageName: "tabbar_discover",index: 2)
        addChildViewController(HMProfileTableViewController(), title: "我的", imageName: "tabbar_profile",index: 3)
        
        
    }
    
    private func addChildViewController(vc: UIViewController, title: String, imageName: String,index: Int)  {

        //设置标签  Xcode的bug  只设置文字 可能会不显示 需要同时设置图片
//        vc.tabBarItem.title = title
//        //设置vc的导航视图控制器的导航条的模型对象的title
//        vc.navigationItem.title = "哈哈哈"
        
        //如果标签和导航条的title是一样的话 
        let tabbaritem = HMTabbarItem()
        vc.tabBarItem = tabbaritem
        vc.title = title
        //设置tag
        vc.tabBarItem.tag = index
        vc.tabBarItem.image = UIImage(named: imageName)
        //设置选中时的图片  需要设置渲染模式 2. 通过在xcasserts中设置
        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.imageWithRenderingMode(.AlwaysOriginal)
        //设置title的颜色   NSForegroundColorAttributeName: 前景色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: .Selected)
        //统一设置所有的title的颜色
//        tabBar.tintColor = UIColor.orangeColor()
        vc.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3)
        
        //
        //内嵌到导航视图控制器中
        let nav = HMBaseNavController(rootViewController: vc)
        //添加子视图控制器
        addChildViewController(nav)
    }
    
    //实现协议方法
    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
        print(item.tag)
        //遍历'tabBar'子视图
        var index = 0
        for v in tabBar.subviews {
            if v.isKindOfClass(NSClassFromString("UITabBarButton")!) {
                //确定点击的是哪一个tabbarButton
                if index == item.tag{
                     //再遍历子视图 获取背景视图
                    for subView in v.subviews {
                        if subView.isKindOfClass(NSClassFromString("UITabBarSwappableImageView")!) {
                            subView.transform = CGAffineTransformMakeScale(0.5, 0.5)
                            //在动画闭包中 恢复到初始值
                            UIView.animateWithDuration(0.6, delay: 0, usingSpringWithDamping: 0.3, initialSpringVelocity: 4, options: [], animations: {
                                subView.transform = CGAffineTransformIdentity
                                }, completion: { (_) in
                                    print("👌")
                            })
                        }
                    }
                }
                index+=1
            }
        }
    }

}



//private  是相对于当前文件的
class person: NSObject {
    func haha() {
        let  tab = HMMainViewController()
        
        tab.addChildViewControllers()
        
    }
}
